﻿using System;
using System.Collections.Generic;
using Entidades;
using log4net;
using NHibernate;


namespace AccesoDatos.DAO
{
    public class DaoMaquina:IDAO.IDaoMaquina
    {
        protected static readonly ILog log = LogManager.GetLogger(typeof(DaoMaquina));

        public IList<MaquinaApuesta> SeleccionarTodos()
        {
            throw new NotImplementedException();
        }

        public MaquinaApuesta SeleccionarPorId(int id)
        {
            throw new NotImplementedException();
        }

        public void Insertar(MaquinaApuesta c)
        {
           // throw new NotImplementedException();
            ISession sesion = ConfiguracionNHibernate.GetCurrentSession();
            ITransaction transaccion = null;
            try
            {
                transaccion = sesion.BeginTransaction();
                sesion.Save(c);
                transaccion.Commit();
                sesion.Flush();

            }
            catch (Exception e)
            {
                e.GetBaseException();
                if (transaccion != null)
                {
                    transaccion.Rollback();
                    throw;
                }
            }

        }

      public void Modificar(MaquinaApuesta c)
        {
            throw new NotImplementedException();
        }

      public void EliminarPorId(int id)
      {
          
          log4net.Config.XmlConfigurator.Configure();

             log.Warn("lis the great");
          ISession sesion = ConfiguracionNHibernate.GetCurrentSession();
          sesion.BeginTransaction();
          sesion.Delete((MaquinaApuesta)sesion.Get(typeof(MaquinaApuesta), id));
          sesion.Transaction.Commit();
      }

        public IList<MaquinaApuesta> SeleccionarPorParametro(string parametro, string valor)
        {
            throw new NotImplementedException();
        }

        public IList<MaquinaApuesta> SeleccionarPorParametro(string parametro, int valor)
        {
            throw new NotImplementedException();
        }

        public IList<MaquinaApuesta> ListarMaquinasActivas()
        {
            log.Info("entrooooo");
            ISession sesion = ConfiguracionNHibernate.GetCurrentSession();
            sesion.BeginTransaction();
            IQuery query = sesion.CreateQuery("from MaquinaApuesta where " + "STATUS" + " = " + 1);
            IList<MaquinaApuesta> retorna = (IList<MaquinaApuesta>)query.List<MaquinaApuesta>();
            sesion.Transaction.Commit();
            return retorna;
        }
    }
}
